package com.info.zhiduoduo.repository.dto.company;

import com.info.zhiduoduo.common.utils.DateUtil;
import com.info.zhiduoduo.common.utils.MapUtil;
import com.info.zhiduoduo.common.utils.NumberUtil;
import com.info.zhiduoduo.common.utils.RandomUtil;
import com.info.zhiduoduo.repository.entity.company.Company;
import com.info.zhiduoduo.repository.entity.company.CompanyAccount;
import com.info.zhiduoduo.repository.entity.crowdsource.CrowdsourceCompanyParty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;
import java.util.Map;

/**
 * 企业在线签署合同对象
 * @author tianyonghong
 * @create 2023/3/31
 */
@Data
@Accessors(chain = true)
public class CompanySignContractDto
{
    // 甲方：取企业信息、
    // 企业名
    private String partyA_companyName;
    // 统一社会信用代码
    private String partyA_creditcode;
    // 地址
    private String partyA_address;
    // 法人
    private String partyA_realname;
    // 联系电话
    private String partyA_phone;
    // 邮箱
    private String partyA_email;
    // 众包费率
    private String partyA_taxRate;

    // 乙方：写死、
    // 企业名
    private String partyB_companyName = "天津四如科技发展有限公司";
//    // 统一社会信用代码
//    private String partyB_creditcode = "91120104MA06 ADE44F";
//    // 地址
//    private String partyB_address = "天津市南开区三马路165号双鹿大厦写字楼四楼8009";
//    // 法人
//    private String partyB_realname = "胡刚";
//    // 联系电话
//    private String partyB_phone = "022-5889 6228";
//    // 邮箱
//    private String partyB_email = "es@zhduoduo.com";


    // 丙方：取企业设置的运营主体
    // 企业名
    private String partyC_companyName;
    // 统一社会信用代码
    private String partyC_creditcode;
    // 地址
    private String partyC_address;
    // 法人
    private String partyC_realname;
    // 联系电话
    private String partyC_phone;
    // 邮箱
    private String partyC_email;
    // 账户名称=企业名称
    private String partyC_accountname;
    // 开户行
    private String partyC_bankname;
    // 账号
    private String partyC_acctno;

    // 在线填写的信息
    @ApiModelProperty("从事业务")
    private String business;
    @ApiModelProperty("企业账号管理员")
    private String manage;
    @ApiModelProperty("手机号")
    private String mobile;

    @ApiModelProperty("合同编号")
    private String contractNo;
    @ApiModelProperty("签订时间")
    private String signDate;

    public static CompanySignContractDto of(Company company, CompanyAccount account, CrowdsourceCompanyParty party, Double taxRate){
        CompanySignContractDto dto = new CompanySignContractDto();
        dto.setPartyA_companyName(company.getCompname());
        dto.setPartyA_creditcode(company.getCreditcode());
        dto.setPartyA_address(company.getCompaddress());
        dto.setPartyA_realname(account.getRealname());
        dto.setPartyA_phone(company.getContactphone());
        dto.setPartyA_email(company.getCompemail());
        dto.setPartyA_taxRate(NumberUtil.formatPercent(taxRate,2));

        dto.setPartyC_companyName(party.getCompanyName());
        dto.setPartyC_creditcode(party.getTaxpayerIdentificationNumber());
        dto.setPartyC_address(party.getCompanyAddress());
        dto.setPartyC_realname(party.getRealname());
        dto.setPartyC_phone(party.getCompanyContactNumber());
        dto.setPartyC_email(party.getElectronicMailBox());

        dto.setPartyC_accountname(party.getCompanyName());
        dto.setPartyC_bankname(party.getContractBankName());
        dto.setPartyC_acctno(party.getContractBankNo());

        dto.setContractNo("CON_" + DateUtil.getNowDateString(DateUtil.FORMAT_STYLE_7) + RandomUtil.getRandomNum(1));
        dto.setSignDate(DateUtil.getString(new Date(),DateUtil.FORMAT_STYLE_3));
        return dto;
    }

    public static Map<String, String> ofMap(CompanySignContractDto dto) {
        Map<String, String> data = MapUtil.obj2StrMap(dto);
        return data;
    }

}
